package com.penghaisoft.microwms.base.web.data.service.impl;

import com.penghaisoft.microwms.base.web.data.service.IMdWorkareaService;
import com.penghaisoft.microwms.base.web.workarea.dao.MdWorkareaMapper;
import com.penghaisoft.microwms.common.Constant;
import com.penghaisoft.microwms.common.data.model.MdWorkarea;
import com.penghaisoft.microwms.common.dto.BuzUserWorkArea;
import com.penghaisoft.microwms.common.dto.Resp;
import com.penghaisoft.microwms.common.page.Pager;
import com.penghaisoft.microwms.common.service.BaseService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description 工作区 维护
 * @author luoteng
 * @date 2017年5月24日 下午2:30:06
 * @version 1.0
 */
@Service("mdWorkareaService")
public class MdWorkareaServiceImpl extends BaseService implements
		IMdWorkareaService {
	@Resource
	private MdWorkareaMapper mdWorkareaMapper;

	/**
	 * @Title create
	 * @Description 新增记录
	 * @author luoteng
	 * @date 2017年5月24日 下午2:30:38
	 * @param mdWorkarea
	 * @return Resp
	 */
	@Override
	public Resp create(MdWorkarea mdWorkarea) {
		MdWorkarea tmp = new MdWorkarea();
		tmp.setWorkareaCode(mdWorkarea.getWorkareaCode());
		tmp.setFactoryCode(mdWorkarea.getFactoryCode());
		// 工作区编码 重复性校验
		int count = mdWorkareaMapper.checkAddUnique(tmp);
		tmp = new MdWorkarea();
		tmp.setWorkareaName(mdWorkarea.getWorkareaName());
		// 工作区名称 重复性校验
		int countName = mdWorkareaMapper.checkAddUnique(tmp);

		Resp resp = new Resp();
		resp.setCode(Constant.SUCCESS);
		if (count != 0) {
			resp.setCode(Constant.FAIL);
			resp.setMsg("base.data.workarea.code.conflict");
			return resp;
		}
		if (countName != 0) {
			resp.setCode(Constant.FAIL);
			resp.setMsg("base.data.workarea.name.conflict");
			return resp;
		} else {
			mdWorkareaMapper.create(mdWorkarea);
		}

		return resp;
	}

	/**
	 * @Title delete
	 * @Description 删除记录
	 * @author luoteng
	 * @date 2017年5月24日 下午2:30:58
	 * @param mdWorkarea
	 * @return Resp
	 */
	@Override
	public Resp delete(MdWorkarea mdWorkarea) {
		mdWorkareaMapper.delete(mdWorkarea);
		return success();
	}

	/**
	 * @Title findListByCondition
	 * @Description 根据条件查询记录
	 * @author luoteng
	 * @date 2017年5月24日 下午2:31:13
	 * @param page
	 * @param rows
	 * @param condition
	 * @return Pager<MdWorkarea>
	 */
	@Override
	public Pager<MdWorkarea> findListByCondition(int page, int rows,
												 MdWorkarea condition) {
		Pager<MdWorkarea> pager = new Pager<>();
		pager.setPage(page);
		pager.setRows(rows);
		// condition.preQuery();
		long size = mdWorkareaMapper.queryCount(condition);
		List<MdWorkarea> records = new ArrayList<MdWorkarea>();
		if(size > 0){
			records = mdWorkareaMapper.queryList(pager, condition);
		}
		pager.setRecords(records);
		pager.setTotalCount(size);
		return pager;
	}

	/**
	 * @Title findById
	 * @Description 根据id查询记录
	 * @author luoteng
	 * @date 2017年5月24日 下午2:31:30
	 * @param id
	 * @return MdWorkarea
	 */
	@Override
	public MdWorkarea findById(String id) {
		return mdWorkareaMapper.queryById(id);
	}

	/**
	 * @Title update
	 * @Description 修改记录
	 * @author luoteng
	 * @date 2017年5月24日 下午2:31:51
	 * @param mdWorkarea
	 * @return Resp
	 */
	@Override
	public Resp update(MdWorkarea mdWorkarea) {
		// 查看区域 业务主键 是否唯一
		int count = mdWorkareaMapper.checkUpdUnique(mdWorkarea);
		Resp resp = new Resp();
		resp.setCode(Constant.SUCCESS);
		if (count != 0) {
			resp.setCode(Constant.FAIL);
			resp.setMsg("base.data.workarea.name.conflict");
		} else {
			mdWorkareaMapper.updateBySelect(mdWorkarea);
		}

		return resp;
	}

	/**
	 * @Title queryWorkAreasUnderFactoryWh
	 * @Description 查询工厂下的工作区
	 * @author luoteng
	 * @date 2017年5月24日 下午2:32:11
	 * @return List<BuzUserWorkArea>
	 */
	@Override
	public List<BuzUserWorkArea> queryWorkAreasUnderFactoryWh() {
		return mdWorkareaMapper.queryWorkAreasUnderFactoryWh();
	}
	
	/** 
	 * <p>Title: queryWorkAreasUnderWh</p> 
	 * <p>Description: 查询仓库下的工作区</p> 
	 * @Title: queryWorkAreasUnderWh 
	 * @Description: 查询仓库下的工作区
	 * @author zhangxu 
	 * @2017年6月6日:2017年6月6日:下午4:10:50
	 * @param @param mdWorkarea
	 * @param @return       
	 * @throws 
	 * @version V0.1 
	 */
	@Override
	public List<MdWorkarea> queryWorkAreasUnderWh(MdWorkarea mdWorkarea){
		
		return mdWorkareaMapper.queryByAny(mdWorkarea);
	}

	@Override
	public List<String> queryWdCodeByWorkarea(String workareaCode) {
		return mdWorkareaMapper.queryWdCodeByWorkarea(workareaCode);
	}

}
